use std::time::Duration;
use axum::Router;
use axum::routing::get;
use tower_http::cors::{Any, CorsLayer};

/// 关于sea_orm的配置，请参考 https://github.com/SeaQL/sea-orm/tree/master/examples

#[tokio::main]
async fn main() {

    // 初始化 tracing 日志系统
    tracing_subscriber::fmt::init();

    // 创建一个跨域配置
    let cors = CorsLayer::new()
        .allow_methods(Any)
        .allow_origin(Any)
        .allow_headers(Any)
        .allow_credentials(true)
        .max_age(Duration::from_secs(60) * 10);

    // 创建一个路由，将根路径映射到一个处理函数
    let app = Router::new()
        .layer(cors)
        .route("/", get(handler))
        .route("/other", get(other_handler));

    // 启动 HTTP 服务器，监听在本地的 8081 端口
    axum::Server::bind(&"0.0.0.0:8081".parse().unwrap())
        .serve(app.into_make_service())
        .await
        .unwrap();
}

// 处理函数，返回 "Hello, Axum!"
async fn handler() -> &'static str {
    "Hello, Axum!"
}

async fn other_handler() -> &'static str {
    "Another route with CORS!"
}
